| @@ -2,7 +2,6 @@ | ||
| 2 | 2 |  | 
| 3 | 3 | from __future__ import division | 
| 4 | 4 |  | 
| 5 | -import json | |
| 6 | 5 | import random | 
| 7 | 6 |  | 
| 8 | 7 | from django_response import response | 
| @@ -10,13 +9,15 @@ from logit import logit | ||
| 10 | 9 |  | 
| 11 | 10 | from mch.models import BrandInfo, ModelImageInfo, ModelInfo | 
| 12 | 11 | from utils.algorithm.b64 import b64_decrypt, b64_encrypt | 
| 12 | +from utils.algorithm.caesar import caesar_decrypt, caesar_encrypt | |
| 13 | 13 | from utils.algorithm.rsalg import rsa_decrypt, rsa_encrypt | 
| 14 | 14 |  | 
| 15 | 15 |  | 
| 16 | -# CIPHER_ALGORITHM = ('B64', 'RSA') | |
| 17 | -CIPHER_ALGORITHM = ('B64', ) | |
| 16 | +# CIPHER_ALGORITHM = ('CAESAR', 'B64', 'RSA') | |
| 17 | +CIPHER_ALGORITHM = ('CAESAR', 'B64') | |
| 18 | 18 |  | 
| 19 | 19 |  CIPHER_PREFIX = { | 
| 20 | + 'CAESAR': '0', | |
| 20 | 21 | 'B64': '1', | 
| 21 | 22 | 'RSA': '2', | 
| 22 | 23 | } | 
| @@ -28,7 +29,9 @@ def encrypt(request): | ||
| 28 | 29 |  | 
| 29 | 30 | alg = random.choice(CIPHER_ALGORITHM) | 
| 30 | 31 |  | 
| 31 | - if alg == 'B64': | |
| 32 | + if alg == 'CAESAR': | |
| 33 | + ciphertext = caesar_encrypt(plaintext) | |
| 34 | + elif alg == 'B64': | |
| 32 | 35 | ciphertext = b64_encrypt(plaintext) | 
| 33 | 36 | elif alg == 'RSA': | 
| 34 | 37 | ciphertext = rsa_encrypt(plaintext) | 
| @@ -46,7 +49,9 @@ def decrypt(request): | ||
| 46 | 49 |  | 
| 47 | 50 |      alg, ciphertext = ciphertext.split('+', 1) | 
| 48 | 51 |  | 
| 49 | - if alg == CIPHER_PREFIX['B64']: | |
| 52 | + if alg == CIPHER_PREFIX['CAESAR']: | |
| 53 | + plaintext = caesar_decrypt(ciphertext) | |
| 54 | + elif alg == CIPHER_PREFIX['B64']: | |
| 50 | 55 | plaintext = b64_decrypt(ciphertext) | 
| 51 | 56 | elif alg == CIPHER_PREFIX['RSA']: | 
| 52 | 57 | plaintext = rsa_decrypt(ciphertext) | 
| @@ -0,0 +1,22 @@ | ||
| 1 | +# -*- coding: utf-8 -*- | |
| 2 | + | |
| 3 | +import random | |
| 4 | +import string | |
| 5 | + | |
| 6 | + | |
| 7 | +fromstr = '0123456789#' | |
| 8 | +tostr = 'RKxyjwzcs6U' | |
| 9 | + | |
| 10 | + | |
| 11 | +def generate_tostr(n): | |
| 12 | + fromstrlist = list(string.letters + string.digits) | |
| 13 | + random.shuffle(fromstrlist) | |
| 14 | + return ''.join(fromstrlist)[:n] | |
| 15 | + | |
| 16 | + | |
| 17 | +def caesar_encrypt(plaintext): | |
| 18 | + return str(plaintext).translate(string.maketrans(fromstr, tostr)) | |
| 19 | + | |
| 20 | + | |
| 21 | +def caesar_decrypt(ciphertext): | |
| 22 | + return str(ciphertext).translate(string.maketrans(tostr, fromstr)) |